Modern graphics systems support a concept known as “opacity” to achieve a visual effect where a graphics primitive that is rendered using opacity appears to be translucent to a varying degree. One challenge, as such pertains to opacity, concerns how to convert such graphics primitives to a system which does not support or has very little support for opacity.
Opacity or transparency is typically represented as a value between 0 and 1. When objects overlap, these values control how two or more objects compose with each other to form a final composed object.
Many traditional devices, such as printers like PCL printers or Postscript printers do not support opacity, or if they do, have limited support for opacity. One traditional approach to attempt to print content having opacity on these types of devices involves rasterizing large parts of a page. Specifically, wherever transparent content is found, those portions of the page are typically rasterized in an attempt to approximate or otherwise deal with the opacity effect.
Opacity-induced rasterization is widely considered unacceptable due to the large amount of rasterized print data that is generated, and due to the resolution dependency that it introduces.
Some systems which attempt to deal with opacity effects use GDI raster operations or Postscript image mask operations. But such attempts often tend to lower the printing quality of the images, create large files sizes and, in the end, provide very limited opacity support.
Accordingly, this invention arose out of concerns associated with providing improved systems and methods for processing graphics and, in particular, improved methods and systems that can be employed to support opacity in the context of devices, such as printers, that themselves have little or no support for opacity.